/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package muhnes.sizoo.controlador;

import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
import javax.faces.model.SelectItem;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import muhnes.sizoo.dal.FamiliaDao;
import muhnes.sizoo.dal.FamiliaDaoImpl;
import muhnes.sizoo.modelo.Familia;
import muhnes.sizoo.dal.SuperfamiliaDao;
import muhnes.sizoo.dal.SuperfamiliaDaoImpl;
import muhnes.sizoo.modelo.Superfamilia;
/**
 *
 * @author Ricardo Orellana
 */
@ManagedBean(name = "familiaBean")
@ViewScoped
public class FamiliaBean implements Serializable {
    
    private Familia familia;
    private List<Familia> listaFamilia;
    private List< SelectItem > listaSuperfamilia;
    
    public FamiliaBean() {
        FamiliaDao dao = new FamiliaDaoImpl();
        familia = new Familia();
        listaFamilia = dao.buscarTodos();
    }

    public Familia getFamilia() {
        return familia;
    }

    public void setFamilia(Familia familia) {
        this.familia = familia;
    }
    
    public List<Familia> getListaFamilia() {
        if( listaFamilia == null ) {
            FamiliaDao dao = new FamiliaDaoImpl();
            listaFamilia = dao.buscarTodos();
        }
        return listaFamilia;
    }

    public void setListaFamilia(List<Familia> listaFamilia) {
        this.listaFamilia = listaFamilia;
    }   
    
     public void prepararAdicion( ActionEvent event  ){
        familia = new Familia();
    }
    
    public void prepararModificacion( Familia familia ){
        this.familia = familia;
    }
    
    public void prepararEliminacion( Familia familia ){
        this.familia = familia;
    }
    
    public void agregarFamilia( ActionEvent event ){
        FamiliaDaoImpl dao = new FamiliaDaoImpl();
        familia.setHabilitado( Boolean.TRUE );
        dao.guardar( familia );
        recrearLista();
    }
    
     public void actualizarFamilia( ActionEvent event ){
        FamiliaDaoImpl dao = new FamiliaDaoImpl();
        dao.actualizar( familia );
        recrearLista();
    }
    
    public void eliminarFamilia( ActionEvent event ){
        FamiliaDaoImpl dao = new FamiliaDaoImpl();
        dao.eliminar( familia );
        recrearLista();
    }
    
    
    public List< SelectItem > getListaSuperfamilia() {
        if( listaSuperfamilia == null ) {
            listaSuperfamilia = new ArrayList< SelectItem >();
            SuperfamiliaDao dao = new SuperfamiliaDaoImpl();
            for( Superfamilia superfamilia : dao.buscarTodos() ) {
                SelectItem item = new SelectItem( superfamilia, superfamilia.getNombre());
                listaSuperfamilia.add( item );
            }
        }
        return listaSuperfamilia;
    }
    
    void recrearLista() {
        listaFamilia = null;
    }
    
}
